﻿using QMERP.Domain.Dtos;

namespace QMERP.Application.Services
{
    public interface IStockService
    {
        /// <summary>
        /// 库存管理窗体
        /// </summary>
        /// <returns></returns>
        Task<PageResponse<StockResponse>> Query(PageRequest<StockRequest> request);
        /// <summary>
        /// 库存管理保存
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task Save(StockSaveRequest request);
        /// <summary>
        /// 获取批量仓库镜种列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        /// <exception cref="ApiException"></exception>
        Task<List<LensViewResponse>> GetBatchLensDetails(BatchStockLensDetailRequest request);
        /// <summary>
        /// 获取仓库镜种列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        /// <exception cref="ApiException"></exception>
        Task<LensViewResponse> GetStockLensDetails(StockLensDetailRequest request);
        /// <summary>
        /// 其他出入库
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task BatchAccess(BatchAccessRequest request);
        /// <summary>
        /// 修改基本库存
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task BasicStockModify(BasicStockModifyRequest request);
        /// <summary>
        /// 获取库存列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<StockResponse>> GetStocks(PageRequest<StockRequest> request);
        /// <summary>
        /// 获取明细
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<StockDetailResponse>> GetStockDetails(PageRequest<StockRequest> request);
        /// <summary>
        /// 获取库存数据
        /// </summary>
        /// <returns></returns>
        Task<LensViewResponse> GetCurrentStockLensDetail(GetCurrentStockLensDetailRequest request);
        /// <summary>
        /// 扫描出入库
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        /// <exception cref="ApiException"></exception>
        Task ScanBarcodeInOrOutStock(ScanBarcodeInOrOutStockRequest request);
    }
}
